// pages/my_activity/index.js
Page({
  data: {
    navBarHeight: 0, // 导航栏总高度
    contentTop: 0, // 内容区域top位置
    
    // 活动状态筛选列表
    statusList: [
      { id: 'all', name: '全部' },
      { id: 'registered', name: '报名中' },
      { id: 'ongoing', name: '进行中' },
      { id: 'finished', name: '已结束' }
    ],
    
    // 当前选中的状态
    selectedStatus: 'all',
    
    // 我的活动列表数据
    myActivityList: [],
    
    // 分页相关
    currentPage: 0,
    pageSize: 10,
    hasMoreData: true,
    isLoading: false,
    
    // 用户信息
    userInfo: null,
    isLoggedIn: false
  },

  onLoad(options) {
    console.log('我的活动页面加载');
    
    // 计算导航栏高度
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight
    const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
    
    const filterHeight = 64 // 筛选栏完整高度
    const spacing = 0 // 筛选栏紧挨navbar，无间距
    
    this.setData({
      navBarHeight,
      contentTop: navBarHeight + filterHeight + spacing
    })
    
    // 检查登录状态
    this.checkLoginStatus()
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo')
    const isLoggedIn = wx.getStorageSync('isLoggedIn')
    
    if (isLoggedIn && userInfo && userInfo._openid) {
      this.setData({
        isLoggedIn: true,
        userInfo: userInfo
      })
      // 加载我的活动数据
      this.loadMyActivities()
    } else {
      // 未登录，跳转到登录页面
      wx.showModal({
        title: '提示',
        content: '请先登录后查看我的活动',
        confirmText: '去登录',
        cancelText: '返回',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/index'
            })
          } else {
            wx.navigateBack()
          }
        }
      })
    }
  },

  /**
   * 加载我的活动数据
   */
  async loadMyActivities(isRefresh = false) {
    if (this.data.isLoading) return
    
    if (!this.data.isLoggedIn || !this.data.userInfo) {
      console.log('用户未登录，无法加载活动数据')
      return
    }
    
    try {
      this.setData({ isLoading: true })
      
      if (isRefresh) {
        this.setData({
          currentPage: 0,
          hasMoreData: true,
          myActivityList: []
        })
      }
      
      if (!this.data.hasMoreData && !isRefresh) {
        console.log('没有更多数据了')
        return
      }

      const result = await wx.cloud.callFunction({
        name: 'getMyActivities',
        data: {
          status: this.data.selectedStatus,
          limit: this.data.pageSize,
          skip: this.data.currentPage * this.data.pageSize
        }
      })

      console.log('我的活动数据获取结果：', result)

      if (result.result && result.result.success) {
        const newActivities = result.result.data || []
        
        // 为每个活动添加一个唯一的 id
        const processedActivities = newActivities.map(activity => ({
          ...activity,
          id: activity._id || activity.id
        }))

        let updatedList = []
        if (isRefresh) {
          updatedList = processedActivities
        } else {
          updatedList = [...this.data.myActivityList, ...processedActivities]
        }

        this.setData({
          myActivityList: updatedList,
          currentPage: this.data.currentPage + 1,
          hasMoreData: newActivities.length === this.data.pageSize
        })

        console.log('我的活动数据加载成功，当前共', updatedList.length, '个活动')
      } else {
        console.error('我的活动数据获取失败：', result.result?.message || '未知错误')
        wx.showToast({
          title: '活动数据加载失败',
          icon: 'none',
          duration: 2000
        })
      }
    } catch (error) {
      console.error('加载我的活动数据出错：', error)
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none',
        duration: 2000
      })
    } finally {
      this.setData({ isLoading: false })
    }
  },

  /**
   * 状态筛选点击事件
   */
  onStatusTap(e) {
    const status = e.currentTarget.dataset.status;
    
    if (status === this.data.selectedStatus) {
      return // 如果点击的是当前已选中的状态，则不做任何操作
    }
    
    this.setData({
      selectedStatus: status
    });
    
    // 重新加载该状态的活动数据
    this.loadMyActivities(true)
    
    const statusName = this.data.statusList.find(item => item.id === status)?.name
    wx.showToast({
      title: `已切换到: ${statusName}`,
      icon: 'none',
      duration: 1500
    });
  },

  /**
   * 活动卡片点击事件
   */
  onActivityCardTap(e) {
    const { item } = e.detail;
    const activityId = item.activityId || item._id || item.id;
    console.log('点击活动卡片，ID:', activityId);
    
    if (!activityId) {
      wx.showToast({
        title: '活动信息错误',
        icon: 'none',
        duration: 2000
      })
      return
    }
    
    wx.navigateTo({
      url: `/pages/activity_detail/index?id=${activityId}`,
      success: () => {
        console.log('成功跳转到活动详情页');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 2000
        })
      }
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    console.log('触底加载更多')
    this.loadMyActivities(false)
  },

  /**
   * 用户下拉刷新
   */
  onPullDownRefresh() {
    console.log('下拉刷新')
    this.loadMyActivities(true).finally(() => {
      wx.stopPullDownRefresh()
    })
  },

  /**
   * 返回按钮点击事件
   */
  onBack() {
    wx.navigateBack()
  },

  /**
   * 去看看活动按钮点击事件
   */
  goToActivity() {
    wx.switchTab({
      url: '/pages/activity/index'
    })
  }
})